Field of the Invention
The present invention relates to diagnostic systems and methods for determined the cause or source of an error or interrupt occurring within a computer.
Background of the Related Art
Currently, some processor manufacturers require Unified Extensible Firmware Interface (UEFI) Power-On Self-Test (POST) code to hide or lock certain diagnostic registers such that those diagnostic registers are inaccessible after POST completes. Accordingly, these diagnostic registers are accessible for only a very short time during POST. The CPU logic that is designed into the silicon chip is responsible for the diagnostic registers becoming “hidden” or “locked.”
Diagnostic registers are often hidden from production run-time level code in order to prevent unauthorized usage of the diagnostic registers by users or applications. The decode logic of the processor hides or locks the diagnostic registers by modifying the Memory or I/O map to remove pointers to the diagnostic registers. However, while removing the diagnostic registers from the memory map prevents unauthorized use of the registers, this also prevents any useful diagnostic code from using the diagnostic registers to identify and analyze failed components.
Diagnostic code or a diagnostic program may run on the same processor where the diagnostic registers are located. The diagnostic code or diagnostic program may be any code that is trying to either service a real-time interrupt that is signaling an error condition, or a stand-alone diagnostic program that a technician or remote system administrator may run in order to get more information about a reported error. For example, diagnostic code running on a main CPU may diagnose a PCIe adapter card error occurring within the same computer as the main CPU, yet the diagnostic code may not be able to identify the exact type of PCIe error because information relevant to the type of error may be held in diagnostic registers that are hidden from the diagnostic code.